var totalFeed = window.location.search ? parseInt(window.location.search.substr(14), 10) : 17,
    numRecentComments  = totalFeed,
    numPerPost         = 99999,
    maxCommentChars    = 99999,
    maxPostTitleChars  = 0,
    txtWrote           = '',
    txtMore            = 'Selengkapnya',
    txtTooltip         = '[title] - [date MM/dd/yy hh:mm]',
    txtAnonymous       = '',
    trueAvatars        = true;
var urlMyAvatar        = 'http://2.bp.blogspot.com/-PI8Zuo2jM4o/T2vhCXeHo5I/AAAAAAAACXQ/iQU5joOKp4o/s1600/my-comment-author.png', 
    urlMyProfile       = 'http://www.blogger.com/profile/17973546667775491071',
    urlAnoAvatar       = 'http://www.gravatar.com/avatar/00000000000000000000000000000000?d=mm&s=16',
    maxResultsPosts    = "&max-results=99999",
    maxResultsComments = "&max-results=" + totalFeed,
    urlToTitle = {};
function replaceVars(text, user, title, date) {
	text = text.replace('[user]', user);
	text = text.replace('[date]', date.toLocaleDateString());
	text = text.replace('[datetime]', date.toLocaleString());
	text = text.replace('[time]', date.toLocaleTimeString());
	text = text.replace('[title]', title.replace(/\"/g, '&quot;'));
	var i = text.indexOf("[date ");
	if (i > -1) {
		var format = /\[date\s+(.+?)\]/.exec(text)[1];
		if (format != '') {
			var txtDate = format.replace(/yyyy/i, date.getFullYear());
			txtDate = txtDate.replace(/yy/i, date.getFullYear().toString().slice(-2));
			txtDate = txtDate.replace("MM", String("0" + (date.getMonth() + 1)).slice(-2));
			txtDate = txtDate.replace("mm", String("0" + date.getMinutes()).slice(-2));
			txtDate = txtDate.replace("ss", String("0" + date.getSeconds()).slice(-2));
			txtDate = txtDate.replace("dd", String("0" + date.getDate()).slice(-2));
			//txtDate = txtDate.replace("dd", date.getDate());
			txtDate = txtDate.replace("hh", String("0" + date.getHours()).slice(-2));
			//txtDate = txtDate.replace("hh", date.getHours());
			text = text.replace(/\[date\s+(.+?)\]/, txtDate)
		}
	}
	return text;
}
if (urlMyProfile == "") {
	var elements = document.getElementsByTagName("*");
	var expr = /(^| )profile-link( |$)/;
	for (var i = 0; i < elements.length; i++)
	if (expr.test(elements[i].className)) {
		urlMyProfile = elements[i].href;
		break;
	}
}
function getPostUrlsForComments(json) {
	for (var i = 0; i < json.feed.entry.length; i++) {
		var entry = json.feed.entry[i];
		var href;
		for (var k = 0; k < entry.link.length; k++) {
			if (entry.link[k].rel == 'alternate') {
				href = entry.link[k].href;
				break;
			}
		}
		urlToTitle[href] = entry.title.$t;
	}
}
function showRecentComments(json) {
	var postHandled = {};
	var j = 0;
	if (numPerPost) {
		while (numPerPost < numRecentComments) {
			for (var i = 0; i < json.feed.entry.length; i++) {
				var entry = json.feed.entry[i];
				if (entry["thr$in-reply-to"]) {
					if (!postHandled[entry["thr$in-reply-to"].href]) postHandled[entry["thr$in-reply-to"].href] = 1;
					else postHandled[entry["thr$in-reply-to"].href]++;
					if (postHandled[entry["thr$in-reply-to"].href] <= numPerPost) j++;
				}
			}
			if (j >= numRecentComments) break;
			numPerPost++;
			j = 0;
			postHandled = {};
		}
		if (numRecentComments == numPerPost) numPerPost = 0;
	}
	postHandled = {};
	j = 0;
	for (var i = 0; j < numRecentComments && i < json.feed.entry.length; i++) {
		var entry = json.feed.entry[i];
		if (numPerPost && postHandled[entry["thr$in-reply-to"].href] && postHandled[entry["thr$in-reply-to"].href] >= numPerPost) continue;
		if (entry["thr$in-reply-to"]) {
			if (!postHandled[entry["thr$in-reply-to"].href]) postHandled[entry["thr$in-reply-to"].href] = 1;
			else postHandled[entry["thr$in-reply-to"].href]++;
			j++;
			var href = '';
			for (var k = 0; k < entry.link.length; k++) {
				if (entry.link[k].rel == 'alternate') {
					href = entry.link[k].href;
					break;
				}
			}
			if (href == '') {
				j--;
				continue;
			}
			var hrefPost = href.split("?")[0];
			var comment = ("content" in entry) ? entry.content.$t : comment = entry.summary.$t;
			var postTitle = "";
			if (urlToTitle[hrefPost]) postTitle = urlToTitle[hrefPost];
			else {
				postTitle = hrefPost.split("/")[5].split(".html")[0].replace(/_\d{2}$/, "");
				postTitle = postTitle.replace(/-/g, " ");
				postTitle = postTitle[0].toUpperCase() + postTitle.slice(1);
			}
			if (maxPostTitleChars && postTitle.length > maxPostTitleChars) {
				postTitle = postTitle.substring(0, maxPostTitleChars);
				var indexBreak = postTitle.lastIndexOf(" ");
				postTitle = postTitle.substring(0, indexBreak) + "...";
			}

			var authorName = entry.author[0].name.$t
			var authorUri = ""
			if (entry.author[0].uri && entry.author[0].uri.$t != "") authorUri = entry.author[0].uri.$t;

			var avaimg = urlAnoAvatar;
			var bloggerprofile = "http://www.blogger.com/profile/";
			if (trueAvatars && authorUri.substr(0, bloggerprofile.length) == bloggerprofile) {
				avaimg = entry.author[0].gd$image.src;
			} else {
				var parseurl = document.createElement('a');
				if (authorUri != "") {
					parseurl.href = authorUri;
					avaimg = 'http://www.google.com/s2/favicons?domain=' + parseurl.hostname;
				}
			}
			if (authorUri == urlMyProfile && urlMyAvatar != "") avaimg = urlMyAvatar;
			if (authorName == 'Anonymous' && txtAnonymous != '' && avaimg == urlAnoAvatar) authorName = txtAnonymous;
        var imgcode = '<img title="' + authorName + '" src="' + avaimg.replace(/\/s[0-9]+/, "/s50") + '" />';
			if (authorUri != "") imgcode = '<a href="' + authorUri + '">' + imgcode + '</a>';

			var clsAdmin = "";
			if (authorName == 'Taufik Nurrohman' || authorName == 'Tukang Pos') clsAdmin = " admin";

			var datePart = entry.published.$t.match(/\d+/g); // assume ISO 8601
			var cmtDate = new Date(datePart[0], datePart[1] - 1, datePart[2], datePart[3], datePart[4], datePart[5]);

			var txtHeader = txtWrote;
			if (txtWrote.indexOf('[') == -1) {
				txtHeader = authorName + ' ' + txtWrote;
			} else {
				txtHeader = replaceVars(txtHeader, authorName, postTitle, cmtDate);
			}
			var tooltip = replaceVars(txtTooltip, authorName, postTitle, cmtDate);

			comment = comment.replace(/<i rel="image">(.[^>]*)<\/i>/ig, "<img class'center' src='$1' alt='Loading...' />");
			
			var skeleton = "";
			skeleton  = '<li class="item' + clsAdmin + '">';
			skeleton += '<div class="face">' + imgcode + '</div>';
			if (comment.length < maxCommentChars) {
				skeleton += '<div class="notification-post"><strong class="title"><a href="' + authorUri + '" target="_blank">' + authorName + '</a> mengomentari <a href="' + href + '" target="_blank">' + tooltip + '</a></strong><div class="notification-body' + clsAdmin + '">' + comment + '</div></div>';
			} else {
				comment = comment.substring(0, maxCommentChars);
				var indexBreak = comment.lastIndexOf(" ");
				comment = comment.substring(0, indexBreak);
				skeleton += '<div class="notification-post"><strong class="title"><a href="' + authorUri + '" target="_blank">' + authorName + '</a> mengomentari <a href="' + href + '" target="_blank">' + tooltip + '</a></strong><div class="notification-body' + clsAdmin + '">' + comment + '... <a href="' + href + '" target="_blank">' + txtMore + '</div></div>';
				if (txtMore != "") {
					var moretext = replaceVars(txtMore, authorName, postTitle, cmtDate);
					skeleton += '';
				}
			}
			skeleton += '</li>';
			document.getElementById('notification-list').innerHTML += skeleton;
		}
	}
}

function appendScript(url) {
	var s = document.createElement('script');
		s.type = "text/javascript";
		s.src = url;
	document.body.appendChild(s);
}
appendScript('http://hompimpaalaihumgambreng.blogspot.com/feeds/posts/summary?redirect=false' + maxResultsPosts + '&alt=json-in-script&callback=getPostUrlsForComments');
appendScript('http://hompimpaalaihumgambreng.blogspot.com/feeds/comments/default?redirect=false' + maxResultsComments + '&alt=json-in-script&callback=showRecentComments');